package com.chat.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.chat.domain.dto.ChatQueryDTO;
import com.chat.domain.dto.LoginDTO;
import com.chat.domain.dto.UserPasswordDTO;
import com.chat.domain.dto.UserProfileDTO;
import com.chat.domain.pojo.Chat;
import com.chat.domain.pojo.Message;
import com.chat.domain.pojo.User;
import jakarta.servlet.http.HttpSession;

import java.util.List;

/**
 * @author wb
 * @since 2024-08-19
 */
public interface UserService extends IService<User> {

    /**
     * 根据用户ID获取用户群聊
     *
     * @param userId 用户ID
     * @return 群聊ID集合
     */
    List<Integer> getGroupIdsById(Integer userId);


    /**
     * 获取聊天信息
     *
     * @param chatQueryDTO 聊天查询条件
     * @return 聊天列表
     */
    List<Chat> getChats(ChatQueryDTO chatQueryDTO);


    /**
     * 登录
     *
     * @param loginDTO 登录数据传输对象
     * @return 用户信息
     */
    Boolean login(LoginDTO loginDTO, HttpSession session);


    /**
     * 更新用户信息
     *
     * @param userProfileDTO 用户更新数据传输对象
     * @return 是否更新成功
     */
    Boolean updateProfile(UserProfileDTO userProfileDTO, HttpSession session);

    /**
     * 更新用户密码
     *
     * @param userPasswordDTO 用户更新密码数据传输对象
     * @param session         会话
     * @return 是否更新成功
     */
    Boolean updatePassword(UserPasswordDTO userPasswordDTO, HttpSession session);


    /**
     * 保存聊天信息
     *
     * @param message 网络消息
     */
    void saveMessage(Message message);


    Chat getChatInfo(String chatId, HttpSession session);

    Boolean deleteChat(String chatId);

    Boolean batchDeleteChat(String str);
}
